#pragma once

#include "Graph.h"
#include "As.h"
class Topology : public Graph
{
public:
	Topology();
	~Topology();
	
	int InsertCustomerProvider(As *pCustomer, As *pProvider);
	int InsertPeerToPeer(As *pPeerA, As *pPeerB);
	
	Set<As*>* GetAss();
	Vector<As*>* GetOrderedAss();
	Vector<As*>* GetOrderedAssAfterInitialized();
	void InitializeOrderedAss(Vector<As*>* pOrderedAss);

	int HowMuchTrafficThroughTheAttacker(As* pAttacker, As* pVictim);
	void RunBgp();

	// Check if there was an update in the topology
	bool WasUpdateOnLastBgpIteration();

	void PrintGraph();
	void PrintSelectedaPaths();

	void NullifyBgp();



private:
	Vector<As*>* _orderedAss;
};


